/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.knolle.validadores;

import javax.swing.JComponent;
import javax.swing.JTextField;
import org.marcelo.agro.core.api.InterfaceAbstractaAccesoADatos;
//import org.marcelo.agro.lotes.api.InterfaceLotes;
import org.openide.util.Lookup;

/**
 *
 * @author marcelo
 * Este metodo hara uso de Lookup para poder realizar las peticiones de las clases, todas las clases deberan implementar el 
 * metodo esUnico() para realizar una peticion y comprobar que el valor pasado no se repite
 * Devo pasarle un parametro para que sepa en que tabla de la base de datos buscar.
 */
public class ValidadorUnico extends AbstractValidador{
    
    private Boolean requerido;
    private InterfaceAbstractaAccesoADatos interfaz;
    private static final String MENSAJES_ERROR_CAMPO_VACIO = "Error: el campo esta vacio";
    private static final String MENSAJES_ERROR_CAMPO_NO_UNICO = "Error: el campo esta repetido";
    
    public ValidadorUnico (javax.swing.JPanel parent, JComponent componente, String mensajeError, Boolean requerido, InterfaceAbstractaAccesoADatos
            interfaz  ){
        super(parent,componente,mensajeError);
        this.requerido = requerido != null? requerido:false;
        this.interfaz = interfaz;     
    }
    
    @Override
    protected Boolean CriterioValidacion(JComponent componente) {
//        Chequear que no sea nulo
        if (requerido && ((JTextField)componente).getText().equals("")){
            setMensaje(MENSAJES_ERROR_CAMPO_VACIO);
            return false;
        }
//        Consultar en la base de datos, y ver como se comporta con el background
        String nombre = ((JTextField)componente).getText();
        if (interfaz.esUnico(nombre))
            return true;
        setMensaje(MENSAJES_ERROR_CAMPO_NO_UNICO);
        return false;
    }
    
}
